home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -in_the_mag- / reader_requests / scilab / demos / transl / printspecs.sci < prev   
Text File  |  1999-09-16  |  2KB  |  69 lines

  1. function []=printspecs(mac,type_desc)
  2. //displays description of a macro to translate into fortran
  3. //!
  4.  
  5. blk='                                 ';
  6. typs=['entier','double precision','?','?']
  7. n=size(type_desc)
  8. [lhs,rhs]=argn(0)
  9.  
  10. [out,in,cod]=string(mac)
  11. txt=['['+makeargs(out)+']='+nam+'('+makeargs(in)+')';cod]
  12.  
  13. desc='| variable number | fortran type    |# rows  |# columns  |'
  14. dd=[20,17,11,13]
  15. for k=1:n,
  16.   tk=type_desc(k)
  17.   num=string(k);num=num+part(blk,1:dd(1)-length(num))
  18.   ftyp=typs(evstr(tk(1))+1);ftyp=ftyp+part(blk,1:dd(2)-length(ftyp))
  19.   nl=tk(2);nl=nl+part(blk,1:dd(3)-length(nl))
  20.   nc=tk(3);nc=nc+part(blk,1:dd(4)-length(nc))
  21.   desc=[desc;'|'+num+'|'+ftyp+'|'+nl+'|'+nc+'|']
  22. end
  23.  
  24. x_message(['       source code of macro';..
  25.          '-----------------------------';' ';txt;..
  26.          ' ';' ';..
  27.          'type and dimension of input parameters';..
  28.          '---------------------------------------';..
  29.          ' ';desc])
  30.  
  31. write(%io(2),[' ';'Now translation is made...';' '])
  32.  
  33. function [txt]=gendesc(mac,type_desc,fnam)
  34. // For intersci...
  35. //!
  36. [out,in]=string(mac)
  37. n=size(type_desc)
  38. first=fnam;
  39. ret='sequence '
  40. for l=1:prod(size(out)), ret=ret+' '+out(l);end
  41. txt=[]
  42. for k=1:n
  43.   tk=type_desc(k)
  44.   first=first+' '+in(k)
  45.   desck=in(k)
  46.   if tk(2:3)= ['1','1'] then 
  47.     desck=desck+'  scalar'
  48.   elseif tk(2)='1' then
  49.     desck=desck+'  column '+tk(3)
  50.   elseif tk(3)='1' then
  51.     desck=desck+'  row '+tk(2)
  52.   else
  53.     desck=desck+'  matrix '+tk(2)+' '+tk(3)
  54.   end
  55.   txt=[txt;desck]
  56. end
  57. txt=[first;txt;' ';'fortran args']
  58. for k=1:n
  59.   tk=type_desc(k)
  60.   first=first+' '+in(k)
  61.   desck=in(k)
  62.   if tk(1)= '0' then 
  63.     desck=desck+'  int'
  64.   elseif tk(2)='1' then
  65.     desck=desck+'  double'
  66.   end
  67.   txt=[txt;desck]
  68. end
  69.